package outbound_crowd

import (
	"context"
)

type OutboundCrowdReposIface interface {
	AddOutboundCrowd(ctx context.Context, data *OutboundCrowd) (int32, error)
	SaveOutboundCrowd(ctx context.Context, data *OutboundCrowd) error
	GetOutboundCrowd(ctx context.Context, id int32) (*OutboundCrowd, error)
	GetOutboundCrowdByName(ctx context.Context, crowdName string) (*OutboundCrowd, error)
	GetOutboundCrowdRpa(ctx context.Context) (int64, *OutboundCrowd, error)
	GetOutboundCrowdPage(ctx context.Context, condition *GetCrowdListCondition, page int32, pageSize int32) ([]*OutboundCrowd, int64, error)
	UpdateStatus(ctx context.Context, id int32, status int32) (bool, error)
	DeleteCrowd(ctx context.Context, id int32) (bool, error)
	GetOutboundCrowdBatch(ctx context.Context, idList []int32) ([]*OutboundCrowd, error)

	AddOutboundCrowdFile(ctx context.Context, data *OutboundCrowdFilePo) (*OutboundCrowdFilePo, error)
	GetOutboundCrowdFileByCondition(ctx context.Context, condition map[string]interface{}) ([]*OutboundCrowdFilePo, error)
	AddOutboundCrowdRuntime(ctx context.Context, data *OutboundCrowdRuntimePo) (*OutboundCrowdRuntimePo, error)
	UpdateRuntimeStatus(ctx context.Context, id int32, status int32) error
	GetOutboundCrowdRuntimeByVersion(ctx context.Context, crowdId int32, crowdVersion int32) (*OutboundCrowdRuntimePo, error)
}
